// pages/exerciseDetail/exerciseDetail.js
const api = require('../../utils/api/index');

Page({

  /**
   * 页面的初始数据
   */
  data: {
    id: null,
    loading: true,
    exerciseData: null,
    showDeleteModal: false,
    // 运动强度描述映射
    intensityLevels: [
      { level: 1, description: '非常轻松' },
      { level: 2, description: '轻松' },
      { level: 3, description: '有点轻松' },
      { level: 4, description: '中等' },
      { level: 5, description: '稍有挑战' },
      { level: 6, description: '挑战' },
      { level: 7, description: '困难' },
      { level: 8, description: '很困难' },
      { level: 9, description: '非常困难' },
      { level: 10, description: '极限' }
    ]
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    if (options.id) {
      this.setData({
        id: options.id
      });
      this.fetchExerciseData(options.id);
    } else {
      this.setData({
        loading: false
      });
      wx.showToast({
        title: '未提供运动记录ID',
        icon: 'none'
      });
    }
  },

  /**
   * 获取运动详情数据
   */
  async fetchExerciseData(id) {
    this.setData({ loading: true });
    
    try {
      const response = await api.exercise.getExerciseById(id);
      
      if (response.success && response.data) {
        // 为运动数据添加图标等展示信息
        const exerciseData = response.data;
        exerciseData.icon = this.getExerciseIcon(exerciseData.type);
        exerciseData.intensityDescription = this.getIntensityDescription(exerciseData.intensity);
        exerciseData.dateFormatted = this.formatDate(exerciseData.date);
        
        // 如果没有类别信息，根据运动类型推断
        if (!exerciseData.category) {
          exerciseData.category = this.inferExerciseCategory(exerciseData.type);
        }
        
        // 计算血糖变化
        if (exerciseData.glucoseBefore !== undefined && exerciseData.glucoseAfter !== undefined) {
          exerciseData.glucoseChange = exerciseData.glucoseAfter - exerciseData.glucoseBefore;
          exerciseData.hasGlucoseData = true;
        } else {
          exerciseData.hasGlucoseData = false;
        }
        
        this.setData({
          exerciseData,
          loading: false
        });
      } else {
        this.setData({
          loading: false
        });
        wx.showToast({
          title: '获取运动数据失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('获取运动详情失败:', error);
      this.setData({
        loading: false
      });
      wx.showToast({
        title: '获取运动数据出错',
        icon: 'none'
      });
    }
  },

  /**
   * 获取运动图标
   */
  getExerciseIcon(type) {
    const iconMap = {
      '步行': '🚶',
      '跑步': '🏃',
      '骑行': '🚴',
      '游泳': '🏊',
      '健身': '💪',
      '瑜伽': '🧘',
      '太极': '🧍',
      '跳舞': '💃',
      '球类运动': '⚽',
      '其他': '🏋️'
    };
    
    return iconMap[type] || '🏋️';
  },

  /**
   * 获取强度描述
   */
  getIntensityDescription(intensity) {
    const level = this.data.intensityLevels.find(level => level.level === intensity);
    return level ? level.description : '中等';
  },

  /**
   * 格式化日期
   */
  formatDate(dateString) {
    const date = new Date(dateString);
    const year = date.getFullYear();
    const month = (date.getMonth() + 1).toString().padStart(2, '0');
    const day = date.getDate().toString().padStart(2, '0');
    return `${year}-${month}-${day}`;
  },

  /**
   * 跳转到编辑页面
   */
  onEdit() {
    if (!this.data.id) return;
    
    wx.navigateTo({
      url: `../exerciseAdd/exerciseAdd?id=${this.data.id}`,
      fail: () => {
        wx.showToast({
          title: '导航到编辑页面失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 显示删除确认弹窗
   */
  onDelete() {
    if (!this.data.id) return;
    
    this.setData({
      showDeleteModal: true
    });
  },

  /**
   * 取消删除
   */
  cancelDelete() {
    this.setData({
      showDeleteModal: false
    });
  },

  /**
   * 确认删除
   */
  async confirmDelete() {
    this.setData({
      showDeleteModal: false,
      loading: true
    });
    
    try {
      const response = await api.exercise.deleteExercise(this.data.id);
      
      if (response.success) {
        wx.showToast({
          title: '删除成功',
          icon: 'success',
          duration: 2000,
          success: () => {
            // 延迟导航回上一页，让用户看到成功提示
            setTimeout(() => {
              wx.navigateBack({
                delta: 1
              });
            }, 1500);
          }
        });
      } else {
        this.setData({ loading: false });
        wx.showToast({
          title: response.message || '删除失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error('删除运动记录失败:', error);
      this.setData({ loading: false });
      wx.showToast({
        title: '删除失败，请重试',
        icon: 'none'
      });
    }
  },

  /**
   * 返回上一页
   */
  onBack() {
    wx.navigateBack();
  },

  /**
   * 分享运动记录
   */
  onShareAppMessage() {
    const { exerciseData } = this.data;
    if (!exerciseData) return {};
    
    return {
      title: `我完成了${exerciseData.duration}分钟${exerciseData.type}，消耗了${exerciseData.caloriesBurned}卡路里！`,
      path: `/pages/exerciseDetail/exerciseDetail?id=${this.data.id}`,
      imageUrl: '/images/share-exercise.png' // 需要提供一个分享图片
    };
  },

  /**
   * 根据运动类型推断运动类别
   */
  inferExerciseCategory(type) {
    // 有氧运动类型
    const aerobicTypes = [
      '步行', '跑步', '慢跑', '骑行', '游泳', '椭圆机', '划船机', 
      '登山', '爬楼梯', '跳绳', '健走', '快走', '竞走', '室内走', 
      '户外走', '蹦床', '跳舞', '广场舞', '有氧舞蹈', '交谊舞',
      '踏步机', '动感单车', '高强度间歇训练', '有氧操', '太极拳',
      '普拉提', '舞蹈', '骑自行车', '球类运动', '篮球', '足球', 
      '网球', '乒乓球', '羽毛球', '高尔夫球'
    ];
    
    // 抗阻训练类型
    const resistanceTypes = [
      '健身', '哑铃训练', '杠铃训练', '器械训练', '弹力带', 
      '俯卧撑', '深蹲', '仰卧起坐', '引体向上', '卧推', 
      '壶铃', '爆发力训练'
    ];
    
    // 柔韧与平衡类型
    const flexibilityTypes = [
      '瑜伽', '八段锦', '拉伸', '静态伸展', '动态伸展', 
      '平衡训练', '关节活动度训练', '舒展运动'
    ];
    
    if (aerobicTypes.includes(type)) {
      return '有氧运动';
    } else if (resistanceTypes.includes(type)) {
      return '抗阻训练';
    } else if (flexibilityTypes.includes(type)) {
      return '柔韧与平衡';
    } else {
      return '其他';
    }
  },
});